package service;

import model.Orders;
import vo.OrderVo;

import java.util.List;

public interface OrdersService {
    /**
     * 添加订单
     * @param order
     * @return boolean
     */
    public boolean add(Orders order);

    /**
     *查找所有订单信息 不分页
     * @return  List<Orders>
     */
    public List<Orders> findAll();

    /**
     * 根据订单id查找订单
     * @param id
     * @return Orders
     */
    public Orders findByID(Integer id);

    /**
     * 删除订单
     * @param id
     * @return boolean
     */
    public boolean delById(Integer id);

    /**
     * 更新订单信息
     * @param order
     * @return  boolean
     */
    public boolean update(Orders order);

    /**
     *根据用户id查找其所有订单
     * @param id
     * @return List<Orders>
     */
    public List<Orders> findByUserId(int id);

    /**
     * 根据用户id和订单状态查询订单Vo信息
     * @param id
     * @param state
     * @return List<OrderVo>
     */
    public List<OrderVo> findOrderInfo(int id,int state);

    /**
     * 根据订单id获取订单Vo
     * @param id
     * @return OrderVo
     */
    public OrderVo findOrderVoById(int id);

    /**
     * 根据订单编号查找订单信息
     * @param order_no
     * @return Orders
     */
    public Orders findOrderByOrderNo(String order_no);

    /**
     * 根据订单编号生成订单视图Vo信息
     * @param order_no
     * @return OrderVo
     */
    public OrderVo findOrderVoByOrderNo(String order_no);

    /**
     *根据订单编号更新订单信息
     * @param order_no
     * @param state
     * @return boolean
     */
    public boolean updateOrderState(String order_no,int state);

    /**
     *生成订单视图分页信息
     * @param page
     * @param limit
     * @return List<OrderVo>
     */
    public List<OrderVo> findAll(int page,int limit);

    /**
     * 查询所有订单数量
     * @return int
     */
    public int findCount();

    /**
     * 查询指定状态的订单数量
     * @param state
     * @return int
     */
    public int findCount(int state);

    /**
     * 根据订单状态生成视图订单Vo信息
     * @param state
     * @param page
     * @param limit
     * @return List<OrderVo>
     */
    public List<OrderVo> findAllByState(int state,int page,int limit);
}
